package com.christina.engine.context;

import com.christina.engine.context.model.ConversationContext;
import com.christina.engine.context.model.UserContext;

/**
 * 上下文管理器接口
 * 
 * @author Christina
 */
public interface ContextManager {
    
    /**
     * 获取用户上下文
     * 
     * @param userId 用户ID
     * @return 用户上下文
     */
    UserContext getUserContext(Long userId);
    
    /**
     * 更新用户上下文
     * 
     * @param userId 用户ID
     * @param context 用户上下文
     */
    void updateUserContext(Long userId, UserContext context);
    
    /**
     * 获取对话上下文
     * 
     * @param sessionId 会话ID
     * @return 对话上下文
     */
    ConversationContext getConversationContext(String sessionId);
    
    /**
     * 更新对话上下文
     * 
     * @param sessionId 会话ID
     * @param context 对话上下文
     */
    void updateConversationContext(String sessionId, ConversationContext context);
    
    /**
     * 清除过期上下文
     */
    void clearExpiredContexts();
    
    /**
     * 合并上下文信息
     * 
     * @param userContext 用户上下文
     * @param conversationContext 对话上下文
     * @return 合并后的上下文
     */
    Object mergeContexts(UserContext userContext, ConversationContext conversationContext);
}